const cloud = require('wx-server-sdk')
const axios = require('axios')
var rp = require('request-promise');
cloud.init()

// 引用xiaobaiai集合
const db = cloud.database()
const xiaobaiai = db.collection('xiaobaiai')

function existQRCode(path) {

}

function insertQRCode(key, path, is_hyaline, width, result) {
    xiaobaiai.add({
        // data 字段表示需新增的 JSON 数据
        data: {
            key: key,
            createdAt: Date.now(),
            result: result,
            path: path,
            is_hyaline: is_hyaline,
            width: width
        },
        success: function(res) {
            // res 是一个对象，其中有 _id 字段标记刚创建的记录的 id
            console.log(res)
        },
        fail: function(err) {
            console.log(err)
        }
    })
}

// 云函数入口函数
exports.main = async(event, context) => {
    console.log(event)


    // 查询是否已经获取过页面分享码
    get_qr_result = await xiaobaiai.where({
        key:  event.key       
    }).get()

    if (get_qr_result.data.length > 0) {
        return get_qr_result.data[0].result;
    }
    
    // 微信小程序AppID
    var appid = "wxef80o4dcc94777802";
    // 微信小程序密钥AppSecret
    var secret = "ef15c06ea0548c8485f4759ed671a311";
    try {
        // appid和secret已自动注入云函数中
        const resultValue = await rp('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appid + '&secret=' + secret);
        const token = JSON.parse(resultValue).access_token;
        console.log('------ TOKEN:', token);
        console.log('------ Event path:', event.path)

        var acode_url = "https://api.weixin.qq.com/wxa/getwxacode";
        if (event.is_qr_code) {
            acode_url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode";
        }
        const response = await axios({
            method: 'post',
            url: acode_url,
            responseType: 'stream',
            params: {
                access_token: token,
            },
            data: {
                path: event.path,
                width: event.width,
                auto_color: false,
                // 是否透明底色
                is_hyaline: event.is_hyaline,
                line_color: {
                    "r": 255,
                    "g": 255,
                    "b": 255
                }
            },
        });

        let result = await cloud.uploadFile({
            cloudPath: 'acodeimages/' + Date.now() + '.png',
            fileContent: response.data
        });

        console.log('-----上传成功: ' + JSON.stringify(result));

        //insertQRCode(event.key, event.path, event.is_hyaline, event.width, result);
        if (result.fileID) {
            await xiaobaiai.add({
                // data 字段表示需新增的 JSON 数据
                data: {
                    key: event.key,
                    createdAt: Date.now(),
                    result: result,
                    path: event.path,
                    is_hyaline: event.is_hyaline,
                    width: event.width
                },
                success: function(res) {
                    // res 是一个对象，其中有 _id 字段标记刚创建的记录的 id
                    console.log(res)
                },
                fail: function(err) {
                    console.log(err)
                }
            })
        }
        return result;

    } catch (err) {
        console.log('>>>>>> ERROR:', err)
    }
}